﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StyleMVVM.DependencyInjection
{
	public interface IExportPipelineHandler
	{
		/// <summary>
		/// Filters the list of export strategies that the pipeline should be applied to
		/// </summary>
		/// <param name="strategies">all strategies</param>
		/// <returns>all exports to apply the pipeline to</returns>
		IEnumerable<IExportStrategy> FilterStrategiesForPipeline(IEnumerable<IExportStrategy> strategies);

		/// <summary>
		/// Upon creating an export the process export method will be called
		/// </summary>
		/// <param name="exportedObject"></param>
		/// <param name="strategy"></param>
		void ProcessExport(object exportedObject, IExportStrategy strategy);
	}
}